<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');
global $data, $admin;

class Xpanel extends CI_Controller {

    public function __construct() {
        parent::__construct();
        global $admin, $data;
        # cargamos variables
        $admin = $this->session->userdata('admin');
        $admin['place'] = 'xpanel';

        # verifica si pasó por sushitto
        if ($admin['te_tipo_empleado_id'] != 1) {
            redirect('home');
        }
        $data['ModConSubM'] = $this->getModConSubM();
        $data['statusTest'] = $this->usuario_model->getSerializacion($admin['e_empleado_id']);
        
        $this->output->enable_profiler(false);
    }

    public function index() {
        global $data, $admin;

        $d_division_id = $admin['d_division_id'];
        $e_empleado_id = $admin['e_empleado_id'];
        
        #Datos del Historial Academico
        $data['testDone'] = $this->usuario_model->countTestDone($e_empleado_id)->conteo;
        $data['testNoDone'] = $this->usuario_model->getNumTestNoDone($e_empleado_id, $d_division_id)->testNoDone;
        $data['avg'] = $this->usuario_model->getAvgEmpleado($e_empleado_id)->avg;
        $data['listTestDone'] = $this->usuario_model->getListTestDone($e_empleado_id);

        $this->load->view('template/header', $admin);
        $this->load->view('template/open_content_container');
        $this->load->view('menu/menu_usuario', $data);
        $this->load->view('panel/cpanel_main');
        $this->load->view('template/close_content_container');
        $this->load->view('template/footer');
    }

    public function logOut() {
        //termina session de ususario
        $this->session->sess_destroy();
        redirect(base_url());
    }

    public function getModConSubM() {
        global $admin;
        $d_division_id = $admin['d_division_id'];
        $dato = array();
        $l_m = $this->usuario_model->getModulos($d_division_id);
        foreach ($l_m as $m) {
            $subms = $this->usuario_model->getSubModulos($m->m_modulo_id);
            $dato += array($m->m_nombre => $subms);
        }
        return $dato;
    }

    public function saveDataMateriales() {
        $sm_sub_modulo_id = $this->input->post('sm_sub_modulo_id');
        $this->session->set_userdata('sm_sub_modulo_id', $sm_sub_modulo_id);
    }

    public function materiales() {
        global $admin, $data;

        $sm_sub_modulo_id = $this->session->userdata('sm_sub_modulo_id');
        
        
        $data['lista_materiales'] = $this->usuario_model->getMateriales($sm_sub_modulo_id);

        $this->load->view('template/header', $admin);
        $this->load->view('template/open_content_container');
        $this->load->view('menu/menu_usuario', $data);
        $this->load->view('submodulos/content');
        $this->load->view('template/close_content_container');
        $this->load->view('template/footer');
    }

    public function saveDataViewPDF() {
        $m_nombre_en_disco = $this->input->post('m_nombre_en_disco');
        $this->session->set_userdata('m_nombre_en_disco', $m_nombre_en_disco);
    }
    
    public function viewPDF() {
        global $admin, $data;
        
        $m_nombre_en_disco = $this->session->userdata('m_nombre_en_disco');
        $obj = $this->usuario_model->getDataDoc($m_nombre_en_disco);
        $ext = $obj->tm_extension;
   
        #Servidor de produccion
        $data['ruta'] = base_url('cc/assets/docs/'.$m_nombre_en_disco.$ext);
        $data['m_titulo'] = $obj->m_titulo;
        
        $this->load->view('template/header', $admin);
        $this->load->view('template/open_content_container');
        $this->load->view('menu/menu_usuario', $data);
        $this->load->view('material/view');
        $this->load->view('template/close_content_container');
        $this->load->view('template/footer');
    }


    public function saveDataGenTest() {
        $m_material_id = $this->input->post('m_material_id');
        $this->session->set_userdata('m_material_id', $m_material_id);
        $this->session->set_userdata('x',1);#Variable para verificar que el 
    }

    /**
     * Funcion que se encarga de insertar en la db el registro del examen
     * Asi como generar las preguntas correspondientes al material
     * @global type $admin
     * @global array $data
     * @param type $m_material_id
     */
    public function genTest() {
        global $admin, $data;
        if(!$this->session->userdata('x')){
            redirect('xpanel');
        }
        $m_material_id = $this->session->userdata('m_material_id');
        $e_empleado_id = $admin['e_empleado_id'];
        $obj = $this->usuario_model->getDataTest($e_empleado_id,$m_material_id);
        
        if(is_object($obj)){//Lo realizo con anterioridad
            $this->usuario_model->updateIntentos($e_empleado_id,$m_material_id);
        }else{//Nunca lo ha realizado
            $this->usuario_model->insertarCurso($e_empleado_id, $m_material_id);
        }
        $this->rellenarCuestionario($e_empleado_id, $m_material_id);
        $data['PregConOpciones'] = $this->getPregConOpciones($m_material_id);
        
        $this->load->view('template/header', $admin);
        $this->load->view('template/open_content_container');
        $this->load->view('menu/menu_usuario', $data);
        $this->load->view('examen/content');
        $this->load->view('template/close_content_container');
        $this->load->view('template/footer');
    }

    /**
     * Funcion que se encarga de generar un arreglo con todas las
     * preguntas con sus correspondientes opciones
     * @param type $m_material_id
     * @return array
     */
    public function getPregConOpciones($m_material_id) {
        $l_p = $this->usuario_model->getPreguntas($m_material_id);
        $pco = array();
        foreach ($l_p as $p) {
            $op = $this->usuario_model->getOpciones($p->p_pregunta_id);
            $pco += array($p->p_pregunta_id => array(
                    'pregunta' => $p->p_pregunta,
                    'opciones' => $op
            ));
        }
        return $pco;
    }

    /**
     * Funcion que se encarga de llenar las respuestas del cuestionario
     * con ceros para evitar que los cuestionarios queden incompletos
     * @param type $m_material_id
     */
    public function rellenarCuestionario($e_empleado_id, $m_material_id) {
        $lista = $this->usuario_model->getIDPreguntas($m_material_id);
        foreach ($lista as $row) {
            $this->usuario_model->updateSeleccion($e_empleado_id, $row->p_pregunta_id, 0);
        }
    }

    /**
     * Funcion que se encarga de hacer la actualizacion de la seleccion del
     * usuario
     */
    public function updateSeleccion() {
        global $admin;
        $e_empleado_id = $admin['e_empleado_id'];
        $p_pregunta_id = $this->input->post('p_pregunta_id');
        $s_seleccionada = $this->input->post('s_seleccionada');
        $this->usuario_model->updateSeleccion($e_empleado_id, $p_pregunta_id, $s_seleccionada);
    }

    /**
     * Funcion que se encarga de calcular la calificacion del examen realizado
     * 
     */
    public function c() {
        global $admin, $data;
        
        $ultimoCT = $this->session->userdata('m_material_id');
        
        $e_empleado_id = $admin['e_empleado_id'];
        #$ultimoCT = $this->usuario_model->getUltimoCursoTomado($e_empleado_id)->m_material_id;
        $cal = $this->usuario_model->getCalifiacion($e_empleado_id, $ultimoCT)->calificacion;
        $min = $this->usuario_model->getMinimo($ultimoCT)->m_minimo;

        $data['min'] = $min;
        $data['aprobado'] = $this->aprobado($cal, $min);
        $data['calificacion'] = $cal;

        $this->session->unset_userdata('x');
        
        $this->load->view('template/header', $admin);
        $this->load->view('template/open_content_container');
        $this->load->view('menu/menu_usuario', $data);
        $this->load->view('examen/resultado');
        $this->load->view('template/close_content_container');
        $this->load->view('template/footer');
    }
    
    public function deleteDataTest(){
        
    }
    
    /**
     * 
     * @param type $calificacion
     * @param type $minimo
     * @return type
     */
    private function aprobado($calificacion, $minimo) {
        return ($calificacion >= $minimo) ? true : false;
    }
   
    /**
     * -------------------------------------------------------------------------------------
     */
    public function llenarExamenes() {

        $usuarios = $this->usuario_model->getUsuarios();
        foreach ($usuarios as $usuario) {
            $ano = rand(2002, 2013);
            $mes = rand(1, 12);
            $dia = rand(1, 28);
            $fecha = DateTime::createFromFormat('Y-m-d', "$ano-$mes-$dia"); #fecha base
            $numTest = $this->usuario_model->getNumTextDiv($usuario->d_division_id)->num;
            $listaMateriales = $this->usuario_model->getTestDiv($usuario->d_division_id);
            $aux = rand(1, $numTest);
            $e_empleado_id = $usuario->e_empleado_id;
            foreach ($listaMateriales as $key => $material) {
                if ($key == $aux) {
                    break;
                } else {
                    $pregs = $this->usuario_model->getLIstaPreguntas($material->m_material_id);
                    $fecha->add(new DateInterval('P' . rand(1, 60) . 'D'));
                    $this->usuario_model->setCT($e_empleado_id, $material->m_material_id, $date->format('Y-m-d'), rand(1, 2));
                    foreach ($pregs as $preg) {
                        $p_pregunta_id = $preg->p_pregunta_id;
                        $s_seleccionada = rand(1, 3);
                        $this->usuario_model->setSeleccion($e_empleado_id, $p_pregunta_id, $s_seleccionada);
                    }
                }
            }
        }
    }

}
